Сервис Tsmsms

Предоставление программного интерфейса

Использование сервиса осуществляется при помощи методов на системной шине UBUS

Метод Описание
"send_sms":{"phone":"String","text":"String"} Отправляет SMS на указанный номер
"delete_sms_by_index":{"index":"Integer"} Удаляет SMS по указан индексу
"read_all_sms":{} Выводит список всех полученных SMS
"read_sms_by_index":{"index":"Integer"} Читает SMS по указанному индексу
"get_count_of_received_sms":{} Выводит количество SMS в накопителе (заполненность накопителя)

Результат выполнения команды и статусы ответа

После вызова команды ответ приходит 2 раза. Первый ответ со статусом (приходит сразу), второй ответ с результатом и статусом результата (приходит с задержкой, используется deferred request ubus).

Статус Описание
ok Команда успешно выполнилась
error Ошибка при выполнении команды
timeout Произошел таймаут при выполнении команды
busy Tsmsms сервис уже выполняет команду
tsmodem_busy Tsmodem сервис занят другим сервисом
started Началось выполнение команды

Примеры вызова ubus команд

Уведомление о новой полученной SMS

При получении SMS модуль tsmodem отправляет AT ответ с PDU данными об SMS, модуль tsmsms делает парсинг SMS данных и создает событие на UBUS шине.

Событие tsmodem.sms NEW-SMS-RECEIVED отправляет данные для подписчиков:

Поле Описание
status Статус UBUS ответа (Статусы из раздела: "Результат выполнения команды и статусы ответа")
sender Номер отправителя
date Дата получения SMS
message Текст сообщения

Структура файлов сервиса

├── app.lua
├── constants
│   ├── cms_error.lua
│   ├── state.lua
│   ├── tsmodem_driver_event.lua
│   └── ubus_response_status.lua
├── pdu_decoder.lua
├── pdu_encoder.lua
├── sms.lua
├── state_machine
│   ├── delete_sms_by_index.lua
│   ├── get_count_of_received_sms.lua
│   ├── main.lua
│   ├── read_all_sms.lua
│   ├── read_sms_by_index.lua
│   └── send_sms.lua
├── test
│   ├── run_test.lua
│   ├── test.lua
│   └── test_prev.lua
├── text_decoder.lua
├── text_encoder.lua
└── util.lua
Файл Описание
constants/cms_error.lua Список CMS ошибок
constants/state.lua Список состояний state machine
constants/tsmodem_driver_event.lua Список состояний ошибок driver event
constants/ubus_response_status.lua Список статусов ubus ответов
state_machine/delete_sms_by_index.lua Содержит AT-команды удаления SMS по индексу
state_machine/get_count_of_received_sms.lua Содержит AT-команды получения количества SMS
state_machine/main.lua Главный файл машины состояний
state_machine/read_all_sms.lua Содержит AT-команды чтение всех SMS
state_machine/read_sms_by_index.lua Содержит AT-команды чтение SMS по индексу
state_machine/send_sms.lua Содержит AT-команды отправки SMS
test/run_test.lua Содержит и запускает тесты
test/test_prev.lua Предыдущая версия тестов (весь код полностью в одном файле)
test/test.lua Содержит методы тестов (библиотека)
app.lua Точка входа, основной файл, запускаемый сервисом в автозагрузке устройства
pdu_decoder.lua Конвертирует PDU формат в читаемый вид
pdu_encoder.lua Конвертирует данные кусочка смс в PDU данные
sms.lua Конвертирует данные смс в PDU формат для отправки
text_decoder.lua Расшифровывает разные форматы в читаемый вид
text_encoder.lua Конвертирует UTF-8 формат в его HEX представление
util.lua Содержит вспомогательные функции

Конфигурирование

$ uci show tsmsms

Ответ:

tsmsms.general=general
tsmsms.general.send_sms_max_attempts='3'
tsmsms.general.tsmodem_response_timeout='60'
tsmsms.general.send_email_if_error='0'
tsmsms.general.email_address='email@email.email'
tsmsms.general.debug='0'
Опция Описание
send_sms_max_attempts Количество попыток отправки SMS
tsmodem_response_timeout Таймаут ожидания ответа от Tsmodem модуля
send_email_if_error Отправлять или нет Email письмо, если произошла ошибка
email_address Email адрес на который отправить письмо при ошибке
debug Включен debug режим или нет

Режим "debug"

$ tsmsms debug